﻿using My.Admin.Enum;
using SqlSugar;
using System.ComponentModel.DataAnnotations;

namespace My.Admin.Model.System
{
	/// <summary>
	/// 系统机构表
	/// </summary>
	[SugarTable(null, "系统机构表")]
	public class SysOrg : EntityTenant
	{
		/// <summary>
		/// 父Id
		/// </summary>
		[SugarColumn(ColumnDescription = "父Id")]
		public long Pid { get; set; }

		/// <summary>
		/// 名称
		/// </summary>
		[SugarColumn(ColumnDescription = "名称", Length = 64)]
		[Required, MaxLength(64)]
		public virtual string Name { get; set; }

		/// <summary>
		/// 编码
		/// </summary>
		[SugarColumn(ColumnDescription = "编码", Length = 64)]
		[MaxLength(64)]
		public string? Code { get; set; }

		/// <summary>
		/// 级别
		/// </summary>
		[SugarColumn(ColumnDescription = "级别")]
		public int? Level { get; set; }

		/// <summary>
		/// 机构类型-数据字典
		/// </summary>
		[SugarColumn(ColumnDescription = "机构类型", Length = 64)]
		[MaxLength(64)]
		public string? Type { get; set; }

		/// <summary>
		/// 负责人Id
		/// </summary>
		[SugarColumn(ColumnDescription = "负责人Id")]
		public long? DirectorId { get; set; }

		/// <summary>
		/// 负责人
		/// </summary>
		[Navigate(NavigateType.OneToOne, nameof(DirectorId))]
		public SysUser Director { get; set; }

		/// <summary>
		/// 排序
		/// </summary>
		[SugarColumn(ColumnDescription = "排序")]
		public int OrderNo { get; set; } = 100;

		/// <summary>
		/// 状态
		/// </summary>
		[SugarColumn(ColumnDescription = "状态")]
		public StatusEnum Status { get; set; } = StatusEnum.Enable;

		/// <summary>
		/// 备注
		/// </summary>
		[SugarColumn(ColumnDescription = "备注", Length = 128)]
		[MaxLength(128)]
		public string? Remark { get; set; }

		/// <summary>
		/// 机构子项
		/// </summary>
		[SugarColumn(IsIgnore = true)]
		public List<SysOrg> Children { get; set; }

		/// <summary>
		/// 是否禁止选中
		/// </summary>
		[SugarColumn(IsIgnore = true)]
		public bool Disabled { get; set; }
	}
}
